package com.jkoss.wine.product.service.impl;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.baomidou.mybatisplus.mapper.SqlHelper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.jkoss.common.util.CommonUtil;
import com.jkoss.wine.customer.entity.Shop;
import com.jkoss.wine.customer.service.IShopService;
import com.jkoss.wine.product.entity.MerchantProductType;
import com.jkoss.wine.product.entity.ProductType;
import com.jkoss.wine.product.mapper.MerchantProductTypeMapper;
import com.jkoss.wine.product.service.IMerchantProductTypeService;
import com.jkoss.wine.product.service.IProductTypeService;


/**
 * 商品分类 服务实现类
 * 
 * @Author nihao
 * @Version 1.0, 2019-08-12
 * @See
 * @Since com.ossjk.oa.merchant_product_type.service.impl
 * @Description: TODO
 */
@Service
public class MerchantProductTypeServiceImpl extends ServiceImpl<MerchantProductTypeMapper, MerchantProductType> implements IMerchantProductTypeService {

	
	@Autowired
	private IShopService iShopService;

	@Autowired
	private IProductTypeService iProductTypeService;
	

	@Override
	public boolean insertMerchantProductType(MerchantProductType entity) throws Exception {
		// 需要获取总店类型的id，所以要先执行新增操作
//		iMerchantProductTypeService.insert(merchant_product_type);
		if (!insert(entity)) {
			// 2种作用：第一种：如果新增失败了，以下的内容就没有必要执行
			// 第二种：事务一致性
			throw new Exception("新增失败");
		}
		// 查询所有店铺
		List<Shop> shops = iShopService.selectList(null);
		// 每个店铺都添加一个同样的类型
		// 新增操作
		List list = new ArrayList();
		for (Shop shop : shops) {
			ProductType productType = new ProductType();
			productType.setParentId(entity.getMerchantProductTypeId());
			productType.setShopId(shop.getShopId());
			productType.setProductTypeName(entity.getProductTypeName());
			productType.setSorting(1);
			productType.setOperator("123");
			productType.setDel(0);
			productType.setAddTime(CommonUtil.getDate());
			list.add(productType);
		}
		// 一个controller里面如果有2次或以上对数据库操作的，会导致事务问题
		if (!iProductTypeService.insertBatch(list)) {
			// 2种作用：第一种：如果新增失败了，以下的内容就没有必要执行
			// 第二种：事务一致性
			throw new Exception("新增失败");
		}
		return true;
	}

}
